Programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs) and the like, are well known. A programmable logic device comprises a complex logical element that may be programmed to effect combinational logic, sequential logic, or combined combination and sequential logic functions. Thus, a PLD allows for software modifications of sequential and/or combinational logic in a physical layer. In this manner, bug fixes, feature enhancements, and other improvements to systems incorporating PLDs may be provided via software update.
PLDs are typically updated by sending a service technician to the physical location of the PLD. The service technician will replace a programmable read-only memory (PROM) on a board or circuit including the PLD to be reprogrammed. Alternatively, an electrically programmable read-only memory (EPROM) may be reprogrammed in the standard manner by downloading new firmware from a personal computer (PC) and using a special program adapter supplied by the manufacturer of the PLD. In either case, the board, circuit, or system incorporating the PLD to be reprogrammed is taken out of operation and serviced by an on-site technician.
Therefore, it is deemed to be desirable to provide a method and apparatus for remotely programming a PLD or FPGA such that on-site visits by a service technician are not required.